// 添加到购物车的核心思路

// 点击产品数据的时候获取这条数据，再把这条数据添加到carts这个数组中就可以了
// 1.点击产品上的加入购物车按钮，获取当前这条数据的id
// 2.拿到数据的id后，查找这条数据，在当前的action中定义方法，接受
// 3.加入到acrts
export default {
    namespaced: true,   // 命名空间
    state: {
        tag:'购物车模块store',
        carts:[]
    },
    mutations: {
        SET_CART(state,payload){
            // 获取数据的id
            let id = payload.id
            // 用这个i到carts到数组中查找有没有这条数据
            // 如果有就让这条数据的数量加1
            // 如果没有就创建一条数据，添加到carts
            let target = state.carts.find(item => item.id == id)
            if(!target){   // 没有这条数据
                let obj = {
                    id,
                    title:payload.title,
                    price:payload.price,
                    count:1
                }
                state.carts.push(obj)
            }else{
                target.count++
            }
        }
    },
    actions: {
        GET_PRODUCT(context,payload){
            // console.log(payload);
            // 让Product模块化store中的products数组中对应的数据，库存-1

            // 通过mutation将传入的数据，添加到当前的carts状态中
            context.commit('SET_CART',payload),
            // { root:true }是触发Product模块中的mutaion
            context.commit("Product/DECREMENT__INVENTORY",payload.id,{ root:true })
        }
    },
    getters: {
        total(state){
            return state.carts.reduce((total,item) => {
                return total += item.count * item.price
            },0).toFixed(2);
        }
    },
    // modules: {}
}